パッケージをインストールする時にpackage@version
という風に指定することで、特定のバージョン(や範囲)に固定することができます。
ちなみに例にはreact
パッケージを用い、これを書いている時点のreact
パッケージの最新は16.8.3
です。
不等号
大なり >
yarn add 'react@>15'
{
"dependencies": {
"react": ">16"
}
}
上記のようにするとバージョン16
より大きいもの、つまり17.x.x
や18.x.x
の中で1番最新のものという意味になります。>16
とすると、まだパッケージが存在していないのでETARGET
エラーになります。(yarn
だと対話モードでのバージョン選択になります)
大なりイコール >=
yarn add 'react@=>16'
{
"dependencies": {
"react": ">16"
}
}
先程のを=>
に変更すると16
以上という意味になり16.x.x
系も含まれるのでエラーにならなくなります。
小なり <
yarn add 'react@<16'
{
"dependencies": {
"react": "<16"
}
}
向きを反対にすると逆の意味になります。<
はそれより小さいバージョン、つまり上記の場合は15.x.x
や14.x.x
の1番最新バージョンが対象になります。
小なりイコール <
yarn add 'react@<16'
{
"dependencies": {
"react": "<=16"
}
}
これは16
以下なので、16.x.x
や15.x.x
や14.x.x
の中で最新という意味になります。これを書いている時点では16.8.3
ということになります。
記号
チルダ ~
yarn add 'react@~16.8.0'
{
"dependencies": {
"react": "~16.8.0"
}
}
そのマイナーバージョン(2番目の数値)の最新という意味になります。つまり上記の場合は最新が16.8.3
なので16.8.3
, 16.8.2
, 16.8.1
, 16.8.0
の中で最新という意味になるので16.8.3
がインストールされます。
キャレット ^
yarn add 'react@^16.0.0'
{
"dependencies": {
"react": "^16.0.0"
}
}
そのグローバルバージョン(1番目の数値)での最新という意味になります。これは@version
を指定しないと自動で@^latest-version
となります。これも16.8.3
, 16.8.2
, 16.8.1
, 16.8.0
, 16.7.0
, ..., 16.0.0
という意味になるので16.8.3
がインストールされます。
エックス x
yarn add 'react@16.8.x'
{
"dependencies": {
"react": "16.8.x"
}
}
そのx
に1番大きな数値が入ったバージョンがインストール対象になります。これを書いている時点では16.8.3
が最新なので、x
には3
が入ります。
記号なし
yarn add 'react@16.8.3'
{
"dependencies": {
"react": "16.8.3"
}
}
ただバージョンを指定するとそのバージョン固定になり、必ず指定したバージョンのものがインストールされます。。